Currently, many applications operating on computing devices (e.g., a smart phone, tablet computer, Global Positioning System (“GPS”) computing device, PDA, etc.) and larger systems with computing devices embedded within them (e.g., cars, airplanes, trucks, boats, etc.) include the ability to track the location of the computing device and alert the user to information specific to the computing device's current location when the computing device enters, remains inside, leaves and/or is absent from a predetermined area or areas that are commonly known as “geofences.”
The term “geofence” refers to a set of geographic coordinates defining a location, area, or boundary, which, when satisfied, initiates some associated functionality (e.g., recording the presence of the user at that place, pushing information, sending an alert, triggering an action or application, etc.) A geofence can be made up of complex polygons or lines between coordinates, and therefore the term “geofence” may be sets of points or coordinates defining a perimeter, a center point plus a radius, a vector space, and any other data structure for defining a 2D or 3D area or perimeter. A geofence may be specified by points defined by latitude, longitude, and altitude values, but the points may also be defined by a street address, intersections of roadways, etc.
Geofences may be implemented in a variety of security, advertising, asset tracking, inventory control, and various other applications or geo-based systems operating on a computing device (herein referred to as “geofence-enabled applications”). For example, a geofence-enabled application for a movie theater on a user's smartphone may alert the user of reduced ticket prices when the user walks into a shopping mall that includes that movie theater and has a geofence that encompasses portions or the entire area of the mall.
Geofence boundaries and services may be provided by a geofence server, an example of which is the Gimbal® server supported by Qualcomm. A geofence-enabled application receives the geographic characteristics/location of nearby geofence(s) from the geofence server. While executing on the computing device, the geofence-enabled application continually determines its location—for example, through the computing device's GPS receiver and/or through a Wi-Fi (e.g., pre-mapped Wi-Fi access point locations) and/or cellular connections (e.g., pre-mapped cell tower locations)—and compares its location with the location of known geofences to determine whether a geofence criterion (e.g., entering a geofence, leaving a geofence, crossing a geofence boundary, etc.) is satisfied. When the geofence-enabled application determines that a geofence criterion has been satisfied, the application may initiate a communication to the geofence server to notify the server of the geofence event, or the application may consume that geofence locally. When sent to the server, the geofence server sends the computing device some appropriate content (e.g., an advertisement or coupon) or instructions, and/or sends an updated list of geofences at that location. When consumed locally on the computing device, the geofence-enabled application may present to a user content already on the computing device (e.g. cached content related to the location, re-sorting of existing content, cached advertisement, etc) and/or may query a content server for content.